草庐IT

反射简化 JDBC ResultSet

全部标签

Java/Scala 反射 : Get class methods in order and force object init

我有一个类,其中有一些对象作为内部方法。我也问了thisquestion不久前得到了一个很好的答案,但这会导致servlet容器中出现fatalerror。当URLClassLoader请求类时,Scala无法始终如一地生成TypeTag。有问题的项目是开源的,找到here.目前找到的方法是here,但它不保留顺序。对象成员已正确初始化,但顺序是随机的。问题:如何收集类(class)成员:按照定义的顺序以线程安全的方式按父类(superclass)型过滤它们贪心初始化对象(引用module.instance)?更新:不要根据此处的链接建议答案,它们已经过测试并且已知会失败。出于风格原因

java - --add-modules 的 Java 9 反射等价物是什么?

我需要一种方法来告诉新创建的类加载器(没有设置父类)我想向它公开的模块(例如java.scripting)。在命令行上传递--add-modules的反射等价物是什么? 最佳答案 没有编程方式来实质性地编辑JVM在启动时创建的模块图(添加读取边是唯一的异常(exception))。这是为了保持正在运行的应用程序安全和稳定而做出的慎重决定。(例如,如果您在不包含java.scripting模块的运行时上运行,您的代码会发生什么情况?)不过,您可以做的是创建一个新层,其中包含一个全新的模块图。启动JVM时,它将根据命令行标志和模块路径内

java通过反射访问Integer构造函数

我有这个代码。为什么它不起作用?(工作意味着它显示3)我该如何修复它?publicclassMain{publicstaticVcopy(Vvar){try{return(V)var.getClass().getConstructor(var.getClass()).newInstance(var);}catch(Exceptione){System.out.println("Copyfaield"+e.getMessage()+"");e.printStackTrace();}returnnull;}publicstaticvoidmain(String[]args){Integer

java - 使用反射在方法中检索类

classtest{publicstaticvoidmain(String[]args){newtest();}voidmethod(){classinside{inta;voidmethodinside(){}}}}我使用反射来声明类:Classc=Class.forName("test");Class[]cls=c.getDeclaredClasses();for(Classcl:cls)System.out.println(cl.getName());但是,我的程序找不到里面的类。 最佳答案 我认为没有找到本地类(在方法内定义

java - 使用反射设置字段 - String 没有 valueOf(String) 方法

我正在通过反射设置Objectthis的公共(public)字段。字段名称和值都以String的形式给出。我使用了几种不同的字段类型:Boolean、Integer、Float、Double、一个自己的enum和一个String。它适用于所有这些除了String。抛出的异常是不存在具有签名String.valueOf(String)的方法......现在我使用一个脏的instanceof解决方法来检测每个字段是否是一个字符串,在这种情况下只需将值复制到字段。privatevoidsetField(Stringfield,Stringvalue)throwsException{Field

java - 反射在 Java 中有哪些适当和不适当的用途?

Java的反射API显然是一个非常强大的工具,但并不是特别面向对象。在哪些情况下适合(反之,不适合)使用反射? 最佳答案 在我看来...适当(干净):实例化动态加载实现的根,例如小程序。使用Proxy创建代理或模拟实现(在编译时可能更好)。实现允许不受限制地访问Java库的解释器。(请注意,从安全角度来看,解释后的代码现在具有作为解释器的有效特权-可能有点危险。)适当的技巧:在绝对必要的地方绕过第三方代码中的Java语言访问控制。实现“横切关注点”,例如持久性。删除加载类导致启动较慢的静态依赖项。不当:一般规避Java语言访问控制(

java - 我如何从 Java 反射调用 Scala 对象上的方法?

我有一个如下定义的scala对象:packagecom.exampleobjectFoo{defbar():String="InterestingResult"}我知道如果Foo在构建和运行时类路径中,我可以从Java调用Foo$.MODULE$.bar(),但在我的情况下Foo不在构建类路径中,可能会也可能不会在运行时类路径中配置。在我的Java代码中,如果运行时类路径中可用,我想使用反射来调用bar(),否则我将回退到默认实现。这有可能吗? 最佳答案 你可以用看起来像这样的代码来做到这一点:packagecom.example.

c# - 什么是编程语言的反射属性?

据说大多数高级动态类型语言都是自反的。Reflection(computerprogramming)维基百科上有解释,但并没有真正清楚地说明它的含义。任何人都可以通过相关示例以更简单的方式解释它吗? 最佳答案 举例说明如何以实际方式使用反射:假设您正在开发一个您希望使用插件扩展的应用程序。这些插件是简单的程序集,仅包含一个名为Person的类:namespaceMyObjects{publicclassPerson{publicPerson(){...Logicsettingpreandpostname...}privatestri

java - 使用反射和数组参数构造类的 IllegalArgumentException

运行以下代码:publicclassTest{publicTest(Object[]test){}publicstaticvoidmain(String[]args)throwsException{Constructorcd=Test.class.getConstructor(Object[].class);Object[]objs={1,2,3,4,5,6,7,8};cd.newInstance(objs);}}我得到错误:Exceptioninthread"main"java.lang.IllegalArgumentException:wrongnumberofargumentsa

java - Java使用反射创建泛型参数化类

如何使用反射在Java中创建通用参数化类?我有publicclassSomeClass{publicSomeClass(){}}我需要它的一个实例。我试过各种变体Classc=Class.forName("SomeClass");但找不到允许我获得适当类型实例的语法,例如SomeTypeinstance=(SomeType)Class.forName("SomeClass").createInstance();那么,我该怎么做呢? 最佳答案 Java使用基于删除的泛型(即,类型参数在运行时被删除——例如,List和List在运行时被